STAAD.Pro Help

OS. C#でのOpenSTAADプログラムの記述

この例では、C#でOpenSTAADアプリケーションを記述するために必要ないくつかの概念を紹介します。

Visual Studio 2019のC#プロジェクトの例は、こちらからダウンロードできます。

ヒント: 前の"Hello World!"の例に従った場合は、その行を削除するだけで、その時点から開始することができます。

OS. C#でのOpenSTAADの開始

注記: この例では、STAAD.Proでモデルを開いておく必要があります。そうしないと、コードからエラーが返されます。
  1. using System.Runtime.InteropServices;」と入力して名前空間を追加します。 この名前空間には、COM相互運用とプラットフォーム呼び出しのサービスをサポートするさまざまなメンバーが用意されています。
  2. OpenSTAADUI.OpenSTAAD os = Marshal.GetActiveObject("StaadPro.OpenSTAAD") as OpenSTAADUI.OpenSTAAD;」と入力し、<Enter>キーを押します。 これにより、OpenSTAADが開始され、プログラムの現在のSTAAD.Proモデルに接続されます。
この時点で、プログラムは次のようになります。
using System;
using System.Runtime.InteropServices;

namespace OSEOMConsoleApp
    {
    class Program
        {
        static void Main (string[] args)
            {
      OpenSTAADUI.OpenSTAAD os = Marshal.GetActiveObject("StaadPro.OpenSTAAD") as OpenSTAADUI.OpenSTAAD;
            }
        }
    }

OS. Geometryメソッドの使用

  1. OpenSTAADUI.OSGeometryUI geometry = os.Geometry;」と入力し、<Enter>キーを押します。

    これにより、ジオメトリ変数がOpenSTAADのGeometryグループのメソッドとして定義されます。

  2. int nodeCount = geometry.GetNodeCount();」と入力し、<Enter>キーを押します。

    これにより、OpenSTAADメソッドGetNodeCount()を使用して、アクティブなSTAAD.Proモデル内のノードの数が指定した変数に返されるようになります。

  3. int beamCount = geometry.GetMemberCount();」と入力し、<Enter>キーを押します。

    同様に、OpenSTAADメソッドGetMemberCount()を使用して、アクティブなSTAAD.Proモデル内のメンバーの数が指定した変数に返されるようになります。

    ヒント: 使用可能なメソッドの詳細、およびそれぞれで入力として受け入れられる値と返される値については、OpenSTAADのドキュメントを参照してください。
この時点で、プログラムは次のようになります。
using System;
using System.Runtime.InteropServices;
	

  	namespace OSEOMConsoleApp
{
class Program
        	{
        	static void Main (string[] args)
            	{
            	OpenSTAADUI.OpenSTAAD os = Marshal.GetActiveObject("StaadPro.OpenSTAAD") as OpenSTAADUI.OpenSTAAD;
            	OpenSTAADUI.OSGeometryUI geometry = os.Geometry;
            	int nodeCount = geometry.GetNodeCount();
           	 int beamCount = geometry.GetMemberCount();
            	}
        }
    }

OS. OpenSTAAD出力の生成

  1. Console.WriteLine("Node Count = " + nodeCount); 」と入力し、<Enter>キーを押します。

    読み取り可能な形式で出力するために、数値のnodeCountの値が文字列と連結されます。

  2. Console.WriteLine("Beam Count = " + beamCount);」と入力します。

    同様に、ここでは、文字列に変換されたbeamCountの値をテキストと連結し、その結果を端末に表示しています。

最終的なプログラムは次のようになります。
using System;
using System.Runtime.InteropServices;

namespace OSEOMConsoleApp
{
class Program
        {
        static void Main (string[] args)
            {
     OpenSTAADUI.OpenSTAAD os = Marshal.GetActiveObject("StaadPro.OpenSTAAD") as OpenSTAADUI.OpenSTAAD;
            OpenSTAADUI.OSGeometryUI geometry = os.Geometry;
            int nodeCount = geometry.GetNodeCount();
            int beamCount = geometry.GetMemberCount();
            Console.WriteLine("Node Count = " + nodeCount);
            Console.WriteLine("Beam Count = " + beamCount);
            Console.ReadLine();
            }
       }
}

OS. コードの実行

これまでの作業で、現在アクティブなSTAAD.Proモデルに関する情報を提供するC#コードの準備ができました。次に、このコードを実行してテストします。

  1. 次のどちらかの方法で、これまでの作業を保存します。

    「ファイル」 > 「保存」の順に選択する

    または

    <Ctrl+S>キーを押す

  2. <Ctrl+F5>キーを押してプロジェクトを実行します。 ターミナルが開き、結果が表示されます。

コメントを使用してコードに注釈を付けることをお勧めします。これにより、コードによる処理内容(あるいは少なくともその意図)を他のユーザーが理解しやすくなります。この完全な例には、該当するコメントが含まれています。

Microsoft Visual Studio 2019でC#の例を実行